
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Nginx反向代理 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>Nginx反向代理 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">Nginx反向代理与正向代理的核心区别是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">在正向代理中，代理服务器代表客户端访问外部网络资源，客户端需要进行配置。而在反向代理中，代理服务器代表后端服务器接收外部请求，客户端无需知道后端服务器的存在，所有请求都由反向代理服务器处理和转发。</div>
          </div>
          <div class="card-source">来源: 1. 反向代理的基本概念</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">文档中提到了反向代理的哪四个主要特点？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">1. 隐藏真实服务器：客户端只知道代理服务器的IP，增强了安全性。2. 负载均衡：将请求分发到多个后端服务器。3. 缓存与加速：缓存静态内容，提升响应速度。4. 安全隔离：作为防火墙保护后端服务器免受直接访问。</div>
          </div>
          <div class="card-source">来源: 1. 反向代理的基本概念</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">请简述Nginx作为反向代理的四个核心工作步骤。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">1. 客户端发送请求：客户端向Nginx服务器发起请求。2. Nginx接受并处理：Nginx根据配置的代理规则，将请求转发到内部的后端服务器。3. 后端服务器响应：后端服务器处理请求并返回响应数据给Nginx。4. 客户端收到响应：Nginx将后端服务器的响应转发给客户端。</div>
          </div>
          <div class="card-source">来源: 2. Nginx作为反向代理的工作原理</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">Nginx在实现负载均衡时，支持哪三种常见的请求分发策略？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">常见的负载均衡策略有三种：1. 轮询（Round-robin）：默认方式，按顺序轮流将请求分发给每个后端服务器。2. 最少连接（Least Connections）：将请求分发给当前连接数最少的后端服务器。3. IP哈希（IP Hash）：根据客户端IP地址进行哈希分配，确保来自同一IP的请求由同一服务器处理。</div>
          </div>
          <div class="card-source">来源: 3.1 负载均衡</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">用途</div>
          <div class="card-question">Nginx作为“TLS/SSL终端代理”的作用和主要优势是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">用途</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">作用是在Nginx处进行SSL/TLS协议的加密与解密，然后将解密后的流量转发给后端服务器。主要优势是减轻了后端应用服务器处理加密通信的负担，从而提升了性能。</div>
          </div>
          <div class="card-source">来源: 3.3 TLS/SSL终端代理</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">在Nginx配置中，用于定义后端服务器组（服务器池）和将请求转发到该组的核心指令分别是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">用于定义后端服务器池的指令是 `upstream` 块。用于将请求转发到 `upstream` 定义的服务器池中的指令是 `proxy_pass`。</div>
          </div>
          <div class="card-source">来源: 4. Nginx反向代理的配置</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">配置Nginx反向代理时，`proxy_set_header` 指令通常用来做什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`proxy_set_header` 指令用于设置或修改转发到后端服务器的HTTP请求头信息。例如，它可以用来将客户端的真实IP地址（$remote_addr）或原始主机名（$host）等信息传递给后端服务器。</div>
          </div>
          <div class="card-source">来源: 4. Nginx反向代理的配置</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">优化</div>
          <div class="card-question">Nginx如何通过连接池来优化与后端服务器的通信性能？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">优化</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">通过使用 `keepalive` 指令配置连接池，Nginx可以维持与后端服务器的持久连接。这避免了为每个请求都重新建立新的TCP连接所带来的开销，从而减少了连接延迟和资源消耗。</div>
          </div>
          <div class="card-source">来源: 5.2 连接池配置</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">优化</div>
          <div class="card-question">除了缓存和连接池，文档还提到了哪两种Nginx反向代理的性能优化方法？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">优化</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档还提到了两种优化方法：1. 开启Gzip压缩：通过压缩响应内容来减少网络带宽消耗，提高传输速度。2. 负载均衡优化：通过健康检查机制，确保请求只会转发到健康的后端服务器。</div>
          </div>
          <div class="card-source">来源: 5. Nginx反向代理的性能优化</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
